/**
 *  \file   myTemperature.c
 *  \brief  Toutes les fonctions relatives à la température mesurée par le capteur (stockage, traitement, calcul de l'offset, etc.)
 *  \author Miora ANDRIAMANOHARISOA, Loic MINGHETTI
 *  \date   PFE 2011
 **/

#include "include.h"
#define NUM_PT_TEMPERATURE 10

/*  Tableau regroupant les 10 dernières mesures de température faites par mesure de tension (sans offset) */ 
int temperature_array[NUM_PT_TEMPERATURE];

/*  calcule l'offset et l'enregistre dans la mémoire flash du capteur à partir de la température réelle */ 
void set_real_temperature(int temp)
{
    OFFSET = temp - adc10_sample_temp();
    flash_save_sensor_offset();
}

/*initialise toutes les instance du tableau de température (NUM_PT_TEMPERATURE) à la même valeur par défaut */
void init_temperature_array(int temperature)  
{
	int i;
	for (i = 0; i < NUM_PT_TEMPERATURE; i++) {
		temperature_array[i] = temperature;
	}
}

/* ajout d'une température à gauche du tableau NUM_PT_TEMPERATURE et décalle toutes les autres valeurs vers la droite  */
void add_temperature(int temperature)  
{
	int i;
	for (i = NUM_PT_TEMPERATURE - 1; i > 0; i--) {
		temperature_array[i] = temperature_array[i - 1];
	}
	temperature_array[0] = temperature;
}

/* calcule une moyenne de toutes les températures du tableau NUM_PT_TEMPERATURE */
int temperature_average() {   
	int total = 0;
	int i;
	for (i = 0; i < NUM_PT_TEMPERATURE; i++) {
		total += temperature_array[i];
	}
	
	return total / NUM_PT_TEMPERATURE;
}